
#1什么是链式调用？就是将一个函数的返回值作为是另一个函数的参数来进行调用

def isodd(num):
    if num%2==0:
        return False
    return True

result = isodd(10)
print(result)

#但如果写成： print(isodd(10))
#上面这种写法就是链式调用

#同样，再举个例子
def add(x,y):
    return x+y

print(isodd(add(1,5)))#这一行也叫做链式访问



#2下面说 嵌套调用
#嵌套调用就是 在一个函数体内部还可以调用其他函数

#举例子1
def test():
    print('hello')

test()

#那么上面这个就是一个嵌套调用，就是test函数中调用了print函数

#3函数递归  就是自己调用自己

#先计算一下阶乘

# def factor(n):
#     result = 1
#     for i in range(1,n+1):
#         result=result*i
#     return result
#
# print(factor(5))

#那么把阶乘改成函数递归的形式
#  这个n!其实就是 n * (n-1)!

def factor(n):
    if n==1:
        return 1
    else:
        return n*factor(n-1)


print(factor(5))

#列表和元组
#列表是可变的，创建好了之后，随时能改
#元组 是不可变的，创建好了之后，改不了，要想改，只能丢弃旧的，搞个新的

#4创建列表
#那么如何创建一个链表？有两种方式
#第1种

a = []#这个代表创建了一个空链表
print(type(a))


#第2种

b = list()#这个也代表创建了一个空链表
print(type(b))


#现在对列表进行初始化
x=[1,2,3,4]
print(x)


#重点重点
#在python中，在同一个列表中，放什么类型都是可以的
y=[1,'hello',True,[1,2,3]]
print(y)


#列表中 我们可以通过下标访问的方式获取列表中的元素
u=[1,2,3,4]
print(u[2])#注意下标也是从0开始计数的

#也可以通过下标来修改元素
c=[1,2,3,4]
c[2]=99
print(c)
#但是注意，元组就不能像这样修改

#计算列表长度
print(len(u))

#非常重要！！在python中，下标可以写成负数
#比如 a[-1] 它代表的意思是 a[len(a)-1]
#假如列表a的长度是4的话，那-1后就是3，所以代表的也就是a[3]
#举例说明

p=[33,57,35,88,96]
print(p[-1])
print(p[len(p)-1])
#上面得出的结果是p[4],也就是96























